package com.neuedu.corejava.ch6;

/**
 * 
 * 1、把客观事务进行分门分类，设计一个class类与之对应 2、
 * 
 * 
 * 
 * 
 * 
 * @author admin
 *
 */

public class Computer {
	// 主机
	// 主机包括：机箱，主板，CPU，内存条，显卡，硬盘
	// has -a 关系，组合关系，依赖关系，强依赖关系（计算机 依赖与 主机）
	// 实例变量，通常也称为属性
	// 封装--就是隐藏类内部的实现，并对外提供访问的接口
	// 封装就是把属性私有化，使用private修饰属性；并提供公有的（getter和setter）方法  或  构造方法   访问私有的属性
	private MainMachine machine;

	// 显示器
	private Display display;

	// 键盘
	private KeyBoard keyBoard;

	// 鼠标
	private Mouse mouse;
/**
 * 
 * 
 * 构造方法：1、方法名与类名相同（大小写相同）；
	      2、没有返回值类型（不需要写void）；
	      3、当使用new关键词实例化对象时，需要调用构造方法
	      4、构造方法一般用于实例化对象时，申请内存使用；或在实例化对象时初始化属性
          5、java编译器会默认给java类提供一个空参的构造方法（当没有编写空好惨构造方法时，会自动生成一个构造方法）
                                         如果显式编写了空参构造方法，则编译器不在提供空参构造方法
          6、构造方法也可以进行方法的重载                               
 * 
 */
	
	//空参
	public Computer(){
	//初始化的概念：其实是第一次给变量进行赋值
		machine=new MainMachine();
		keyBoard=new KeyBoard();
		display=new Display();
		mouse=new Mouse();
	}
	
	
	
	//source--using Fieled
	//全参构造方法（构造器）
	public Computer(MainMachine machine, Display display, KeyBoard keyBoard,
		Mouse mouse) {
	super();
	//当属性与局部变量名，名称相同时会产生名称冲突
	//可以使用this关键词表示类的属性
	this.machine = machine;
	this.display = display;
	this.keyBoard = keyBoard;
	this.mouse = mouse;
	
	}

	

	public Computer(MainMachine machine, Display display) {
		super();
		this.machine = machine;
		this.display = display;
		keyBoard = keyBoard;
		mouse = mouse;
	}



	public MainMachine getMachine() {
		return machine;
	}

	public void setMachine(MainMachine machine) {
		this.machine = machine;
	}

	public Display getDisplay() {
		return display;
	}

	public void setDisplay(Display display) {
		this.display = display;
	}

	public KeyBoard getKeyBoard() {
		return keyBoard;
	}

	public void setKeyBoard(KeyBoard keyBoard) {
		this.keyBoard = keyBoard;
	}

	public Mouse getMouse() {
		return mouse;
	}

	public void setMouse(Mouse mouse) {
		this.mouse = mouse;
	}

	
	
	
	
	// 计算
	private void calculate() {
		System.out.println("执行计算");
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub

	}

}
